 /**
 * 绘制一条直线
 * @param {CanvasRenderingContext2D} ctx - Canvas 上下文
 * @param {number} x1 - 起点的 x 坐标
 * @param {number} y1 - 起点的 y 坐标
 * @param {number} x2 - 终点的 x 坐标
 * @param {number} y2 - 终点的 y 坐标
 * @param {string} color - 线条颜色
 * @param {number} lineWidth - 线条宽度
 */
export function Line( x1, y1, x2, y2, color , lineWidth) {
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.strokeStyle = color; 
    ctx.lineWidth = lineWidth;
    
    ctx.stroke();
}

/**
 * 绘制一个圆形
 * @param {CanvasRenderingContext2D} ctx - Canvas 上下文
 * @param {number} x - 圆心的 x 坐标
 * @param {number} y - 圆心的 y 坐标
 * @param {number} radius - 圆的半径
 * @param {string} fillColor - 填充颜色（设为null则不填充）
 * @param {string} strokeColor - 描边颜色（设为null则不描边）
 * @param {number} lineWidth - 描边宽度
 */
export function Circle( x, y, radius, fillColor , strokeColor , lineWidth,startAngle , endAngle  ) {
    ctx.beginPath();
    ctx.arc(x, y, radius, startAngle * Math.PI / 180, 
        endAngle * Math.PI / 180);
    
    if (fillColor) {
        ctx.fillStyle = fillColor;
        ctx.fill();
    }
    
    if (strokeColor) {
        ctx.strokeStyle = strokeColor;
        ctx.lineWidth = lineWidth;
        ctx.stroke();
    }
}

/**
 * 加载图片
 * @param {string} src - 图片的源路径
 * @param {function} callback - 图片加载完成后的回调函数，参数为加载好的 Image 对象
 */
export function loadImage(src, callback) {
    const img = new Image();
    img.src = src;
    img.onload = () => {
        callback(img);
    };
    img.onerror = () => {
        console.error(`Failed to load image from ${src}`);
        alert(`Failed to load image from ${src}`);
    };
}    


/**
 * 绘制一个矩形
 * @param {CanvasRenderingContext2D} ctx - Canvas 上下文
 * @param {number} x - 矩形左上角的 x 坐标
 * @param {number} y - 矩形左上角的 y 坐标
 * @param {number} width - 矩形的宽度
 * @param {number} height - 矩形的高度
 * @param {number} radius - 矩形的圆角半径
 * @param {string} fillColor - 填充颜色
 * @param {string} strokeColor - 描边颜色
 */
 export  function RoundedRect(x, y, width, height, radius, fillColor, strokeColor) {
    ctx.beginPath();
    ctx.moveTo(x + radius, y);
    ctx.lineTo(x + width - radius, y);
    ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
    ctx.lineTo(x + width, y + height - radius);
    ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
    ctx.lineTo(x + radius, y + height);
    ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
    ctx.lineTo(x, y + radius);
    ctx.quadraticCurveTo(x, y, x + radius, y);
    ctx.closePath();
    
    if (fillColor) {
        ctx.fillStyle = fillColor;
        ctx.fill();
    }
    if (strokeColor) {
        ctx.strokeStyle = strokeColor;
        ctx.stroke();
    }
}



/**
         * 绘制三角形函数
         * @param {number} x1 - 第一个点的x坐标
         * @param {number} y1 - 第一个点的y坐标
         * @param {number} x2 - 第二个点的x坐标
         * @param {number} y2 - 第二个点的y坐标
         * @param {number} x3 - 第三个点的x坐标
         * @param {number} y3 - 第三个点的y坐标
         * @param {string} [fillColor] - 填充颜色(可选)
         * @param {string} [strokeColor] - 描边颜色(可选)
         */
function Triangle(x1, y1, x2, y2, x3, y3, fillColor, strokeColor) {
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.lineTo(x3, y3);
    ctx.closePath();
    
    if (fillColor) {
        ctx.fillStyle = fillColor;
        ctx.fill();
    }
    
    if (strokeColor) {
        ctx.strokeStyle = strokeColor;
        ctx.stroke();
    }
}
